/* ============================================================================
* 功能描述 ：按键函数实现
* 作者       ：ggls
* 创建日期 ：2024.5.22
* ----------------------------------------------------------------------------
* 更新历史 ：
*	日期 　　- 修改者   : 更新内容描述
*
* ============================================================================
*/


#include "main.h"


bit key_sleep = 1;








u32 key_time = 0; // 按键计时
u32 now_key_time = 0; // 按键计时


char key_flag2;

char key_state = 0;

bit time_f;
u32 now_time_f = 0;
u32 last_time_f;

bit unit_flag = 0;

unsigned int  uiKeyATimeCnt12 = 0; 	//按下按键A去抖动延时计数器
char key_event = 0;

char keysleep_flag = 0;
u32 keysleep_time = 0;


void Hly_Key_Init(void)
{
	/* 设置io功能 */
	GPIO_SET_MUX_MODE(P16CFG, GPIO_MUX_GPIO);		//设置P16为GPIO模式
	GPIO_ENABLE_INPUT(P1TRIS, GPIO_PIN_6);			//设置为输入模式
	GPIO_ENABLE_UP(P1UP, GPIO_PIN_6);				//开启上拉
	


	/* 设置中断方式 */
	GPIO_SET_INT_MODE(P16EICFG, GPIO_INT_FALLING);	//设置为下降沿中断模式
	GPIO_EnableInt(GPIO1, GPIO_PIN_6_MSK);			//开启P16中断

//	P30 = 1;
	/*
	(3)设置中断优先级
	*/
	IRQ_SET_PRIORITY(IRQ_P1, IRQ_PRIORITY_LOW);
	/*
	(4)开启总中断
	*/	
	IRQ_ALL_ENABLE();

	
}



void key_scan(void) 
{	
	ms_counter++;
	if(ms_counter == 10000)
	{
		ms_counter = 0;

	}
	if(P16 == 0)
	{
		uiKeyATimeCnt12++;
		if(uiKeyATimeCnt12 >= 5000 )
		{
			key_event = 1;
			uiKeyATimeCnt12 = 0;
		}
	}
	else if(P16 == 1)
	{
		
		if(uiKeyATimeCnt12 > 10  &&  uiKeyATimeCnt12 < 500)
		{
			key_event = 2;
			uiKeyATimeCnt12 = 0;

		}
		uiKeyATimeCnt12 = 0;
		
	}
	if(keysleep_flag == 1)
	{
		keysleep_time++;
		if(keysleep_time == 10000)
		{
			hly_lux_getval();
			keysleep_flag = 0;
			keysleep_time = 0;
		}

	}

	if(key_sleep == 1)
	{
		now_time_f++;
		if(now_time_f == 1000)
		{
			key_sleep = 0;
			now_time_f = 0;
		}

	}
}

void key_service(void)
{
	switch(key_event)
	{
		case 1:
			key_event = 0;
			Zigbee_wake_up();
			delayms(30);
			Zigbee_Network_Status();
			
			Zigbee_sleep();
	
			break;
		case 2:
			key_event = 0;
			Zigbee_wake_up();
			delayms(30);
			Hly_Packet_Network_msg(query_current_network_status, 0, 0);
			
			Zigbee_sleep();
	
			break;
		case 3:
			
			break;
		case 4:
		
			break;
		case 5:
			
			break;
	}
}


